package com.bincloud.vue.admin.web.service.api;

import com.bincloud.vue.admin.web.dto.api.auth.AuthLoginReqDTO;
import com.bincloud.vue.admin.web.dto.api.auth.AuthResDTO;
import com.bincloud.vue.admin.web.dto.api.auth.AuthValidateReqDTO;

/**
 * @Description: 用户接口
 * @Author: bincloud, mvpzhou
 * @Date: Create By bincloud, mvpzhou on 2022/2/16
 */
public interface AuthService {

    /**
     * 用户认证 一次验证
     * 1.账号
     * 2.密码
     * 3.验证码（图形）
     * 规则
     * 1.密码错误连续N次锁定用户
     * 2.用户锁定时长
     *
     * @param reqDTO 入参
     * @return 返参
     */
    AuthResDTO loginUser(AuthLoginReqDTO reqDTO);

    /**
     * 用户认证 二次验证
     * 1.账号
     * 2.密码
     * 3.验证码（图形）
     * 规则
     * 1.密码错误连续N次锁定用户
     * 2.用户锁定时长
     * 3.缓存临时用户
     *
     * @param reqDTO 入参
     * @return 返参
     */
    AuthResDTO twoFactorLogin(AuthLoginReqDTO reqDTO);

    /**
     * 用户认证 二次验证
     * 1.账号
     * 2.密码
     * 3.验证码（图形）
     * 规则
     * 1.密码错误连续N次锁定用户
     * 2.用户锁定时长
     * 3.缓存临时用户
     *
     * @param reqDTO 入参
     * @return 返参
     */
    AuthResDTO validateLogin(AuthValidateReqDTO reqDTO);
}
